
package com.jf.cloud.live.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.live.dto.LiveProdStoreDTO;
import com.jf.cloud.live.model.LiveProdStore;
import me.chanjar.weixin.common.error.WxErrorException;

import java.util.List;

/**
 * 直播商品
 *
 * @author zz
 * @date 2022-08-17 17:09:06
 */
public interface LiveProdStoreService {

    /**
     * 分页获取直播商品列表
     * @param pageDTO 分页参数
     * @return 直播商品列表分页数据
     */
    PageVO<LiveProdStore> page(PageDTO pageDTO, LiveProdStoreDTO liveProdStoreDTO);

    /**
     * 根据直播商品id获取直播商品
     *
     * @param liveProdStoreId 直播商品id
     * @return 直播商品
     */
    LiveProdStore getByLiveProdStoreId(Long liveProdStoreId);

    /**
     * 保存直播商品
     * @param liveProdStore 直播商品
     */
    void save(LiveProdStore liveProdStore);

    /**
     * 更新直播商品
     * @param liveProdStore 直播商品
     */
    void update(LiveProdStore liveProdStore);

    /**
     * 根据直播商品id删除直播商品
     * @param liveProdStoreId 直播商品id
     */
    void deleteById(Long liveProdStoreId);

    /**
     * 提交审核
     * @param liveProdStore 直播间商品信息
     * @return 结果
     */
    boolean submitVerify(LiveProdStore liveProdStore);

    /**
     * 移除微信的直播商品
     * @param liveProdStoreId 直播间id
     * @param  tenantId
     * @throws WxErrorException 微信异常
     */
    void removeWxLiveProdById(Long liveProdStoreId, Long tenantId) throws WxErrorException;

    /**
     * 通过直播间id获取直播间商品
     * @param page 分页信息
     * @param roomId 直播间id
     * @return 直播间商品
     */
    PageVO<LiveProdStore> pageProdByRoomId(PageDTO page, Integer roomId);

    /**
     * 同步微信的直播商品
     * @throws WxErrorException 微信异常
     */
    void synchronousWxLiveProds();

    /**
     * 删除十天前上架的微信直播商品
     * @throws WxErrorException 微信异常
     */
    void removeOldLiveProd();

    /**
     * 获取直播商品列表
     * @param liveProdStore
     * @return
     */
    List<LiveProdStore> list(LiveProdStoreDTO liveProdStore);

    /**
     * 根据id获取商品库列表
     * @param filterProdStoreIds
     * @return
     */
    PageVO<LiveProdStore> pageProdStoreByIds(PageDTO page, List<Long> filterProdStoreIds);

    /**
     * 修改微信的直播商品
     * @param liveProdStore 直播商品
     * @throws WxErrorException 微信异常
     */
    void updateWxLiveProdById(LiveProdStore liveProdStore) throws WxErrorException;
}
